package com.ruoyi.sys.admin.service.impl;

import java.util.List;


import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.sys.admin.mapper.AdminMapper;
import com.ruoyi.sys.admin.domain.Admin;
import com.ruoyi.sys.admin.service.IAdminService;

/**
 * 系统管理员Service业务层处理
 * 
 * @author hyl
 * @date 2025-06-06
 */
@Service
public class AdminServiceImpl implements IAdminService 
{
    @Autowired
    private AdminMapper adminMapper;

    /**
     * 查询系统管理员
     * 
     * @param adminId 系统管理员主键
     * @return 系统管理员
     */
    @Override
    public Admin selectAdminByAdminId(Long adminId)
    {
        return adminMapper.selectAdminByAdminId(adminId);
    }

    /**
     * 查询系统管理员列表
     * 
     * @param admin 系统管理员
     * @return 系统管理员
     */
    @Override
    /*@DataScope(deptAlias = "d", userAlias = "a")*/
    public List<Admin> selectAdminList(Admin admin)
    {
        return adminMapper.selectAdminList(admin);
    }

    /**
     * 新增系统管理员
     * 
     * @param admin 系统管理员
     * @return 结果
     */
    @Override
    public int insertAdmin(Admin admin)
    {
        admin.setCreateTime(DateUtils.getNowDate());
        //管理员新增时：默认密码：000000
        admin.setPassword("000000");
        return adminMapper.insertAdmin(admin);
    }

    /**
     * 修改系统管理员
     * 
     * @param admin 系统管理员
     * @return 结果
     */
    @Override
    public int updateAdmin(Admin admin)
    {
        admin.setUpdateTime(DateUtils.getNowDate());
        return adminMapper.updateAdmin(admin);
    }

    /**
     * 批量删除系统管理员
     * 
     * @param adminIds 需要删除的系统管理员主键
     * @return 结果
     */
    @Override
    public int deleteAdminByAdminIds(Long[] adminIds)
    {
        return adminMapper.deleteAdminByAdminIds(adminIds);
    }

    /**
     * 删除系统管理员信息
     * 
     * @param adminId 系统管理员主键
     * @return 结果
     */
    @Override
    public int deleteAdminByAdminId(Long adminId)
    {
        return adminMapper.deleteAdminByAdminId(adminId);
    }

    /**
     * 校验用户是否允许操作
     *
     * @param admin 管理员信息
     */
    @Override
    public void checkAdminAllowed(Admin admin)
    {
        if (StringUtils.isNotNull(admin.getAdminId()) && admin.isAdmin())
        {
            throw new ServiceException("不允许操作超级管理员用户");
        }
    }

    @Override
    public int updateAdminStatus(Admin admin) {
        return this.updateAdmin(admin);
    }
}
